<?php
/**
 * 错误码常量表
 *
 * Author: Zeon
 * Date: 2018/3/20
 * Created by Panxsoft.
 */
namespace App\Exceptions;


class ApiErrCode
{
    const LOG_PREFIX = '[DIREWOLF DEBUG] ';

    // 0 api 正常返回码
    const API_CODE_OK = 0;

    // - 1 未知错误
    const UNKNOWN_ERROR = -1;

    // 1xxx 需要继续操作
    const NEED_FORCE_OPERATE = 1010;

    // 2xxx 预留错误

    // 3xxx 提交参数错误
    const REQUEST_PARAMS_ERROR = 3001;
    const REQUEST_PARAMS_EMPTY = 3002;          // 参数不能为空
    const REQUEST_PARAMS_TYPE_ERROR = 3003;
    const REQUEST_PARAMS_NOT_IN_RANGE = 3004;   // 不在可选范围

    // 4xxx 用户权限错误
    const INVALID_PASSWORD = 4000;
    const WECHAT_USER_NOT_FOUND = 4001;
    const WECHAT_USER_INFO_AUTH_NEEDED = 4004;
    const ADMIN_AUTH_NOT_FOUND = 4006;              // 访问者无权访问
    const AUTHORIZER_NOT_FOUND = 4011;              // 未找到授权公众号
    const UNSUBSCRIBED_OFFICIAL_ACCOUNT = 4012;     // 没有关注公众号
    const WECHAT_USER_NOT_MATCHED = 4021;
    const OPERATOR_NOT_ALLOWED = 4031;         // 无操作权限
    const OPERATE_FAILED = 4032;               // 执行项目操作失败，请检查
    const AUTHORIZE_ERROR_ID_UNKNOWN = 4040 ;  // Request 类认证失败默认错误

    // 5xxx 服务端问题
    const DB_ITEM_NOT_FOUND = 5001;       // 你所查找的内容不存在
    const DB_NOT_EDITABLE = 5011;         // 你所查找的内容已锁定，不能修改
    const DB_EDIT_FAILED = 5012;
    const CUSTOMIZE_ERROR = 5013;         // 自定义错误
    const COLLECTION_EMPTY_ERROR = 5015;  // 检测集合是否为空
    const BOS_UPLOAD_ERROR = 5020;        // BOS上传 错误
    const DB_TRANSACTION_FAILED = 5030;   // 数据库事务错误

    const SMS_SEND_FAILED = 5040;   // SMS 发送失败
    const VERIFY_CODE_FAIL = 5041;   // 验证码验证失败
    const SMS_PROXY_SEND_FAILED = 5042;   // SMS 代理发送失败

    const EMAIL_SEND_FAILED = 5050;   // email 发送失败

    // 6xxx JWT 认证相关错误
    const TOKEN_GENERATE_FAIL = 6000;
    const TOKEN_ERROR         = 6001;
    const JWT_TOKEN_NOT_FOUND = 6002;         // token 参数不能为空
    const JWT_TOKEN_INVALID   = 6003;         // token 失效，前端应尝试刷新 token

    /*
     |----------------------------------------------------------------
     | 下面是特定的接口返回特定代码，长度 5 位数，不会重复全局只使用一次
     |----------------------------------------------------------------
     */
    const PAY_PAL_PAYMENT_CANCEL = 10002; // paypal 取消支付的状态。
    const ALIPAY_PAYMENT_ALLOW_CNY = 10003; // 支付宝只允许人民币付款。
}

